package com.ruoyi.fileMaintenance.mapper;

import java.util.List;
import com.ruoyi.fileMaintenance.domain.TCourse;
import com.ruoyi.fileMaintenance.domain.TCourseBinding;
import com.ruoyi.fileMaintenance.domain.TCourseLearning;
import com.ruoyi.fileMaintenance.domain.dto.TCourseDto;
import org.apache.ibatis.annotations.Param;

/**
 * 课程Mapper接口
 * 
 * @author ruoyi
 * @date 2024-03-27
 */
public interface TCourseMapper 
{
    /**
     * 查询课程
     * 
     * @param id 课程主键
     * @return 课程
     */
    public TCourse selectTCourseById(Long id);

    /**
     * 查询课程列表
     * 
     * @param tCourse 课程
     * @return 课程集合
     */
    public List<TCourse> selectTCourseList(TCourse tCourse);

    /**
     * app查询课程列表
     *
     * @param tCourseDto 课程
     * @return 课程集合
     */
    public List<TCourseDto> selectTCourseList2(TCourseDto tCourseDto);

    /**
     * 查询用户绑定的课程
     *
     * @param tCourseBinding 课程绑定
     * @return 课程集合
     */
    public TCourseBinding selectCourseBinding(TCourseBinding tCourseBinding);

    /**
     * 新增课程
     * 
     * @param tCourse 课程
     * @return 结果
     */
    public int insertTCourse(TCourse tCourse);

    /**
     * 修改课程
     * 
     * @param tCourse 课程
     * @return 结果
     */
    public int updateTCourse(TCourse tCourse);

    /**
     * 删除课程
     * 
     * @param id 课程主键
     * @return 结果
     */
    public int deleteTCourseById(Long id);

    /**
     * 批量删除课程
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTCourseByIds(Long[] ids);

    /**
     * 课程绑定
     *
     * @param tCourseBinding 课程绑定
     * @return 结果
     */
    public int insertCourseBinding(TCourseBinding tCourseBinding);

    /**
     * 删除用户id下绑定的课程
     *
     * @param id 需要删除的用户id数据主键
     * @return 结果
     */
    public int deleteCourseBinding(Long id);

    /**
     * 删除用户课程学习情况进度
     *
     * @param tCourseLearning 课程绑定
     * @return 结果
     */
    public int deleteTCourseLearning(@Param("courseId") Long courseId, @Param("userId") Long userId);
}
